Estaba leyendo el libro Inyección de dependencias en .NET, de Mark Seemann, donde me topé con el tema de Inyección de propiedades .
Como se describe en el libro para usar la inyección de propiedad, la condición era:
1) Cuando el uso de Inyección de Dependencia es opcional
2) Cuando tenemos un buen Local Default
Mientras buscaba en Internet sobre "Predeterminado local", no obtuve ninguna definición significativa para este concepto.
En ambas ediciones del libro, se puede encontrar una definición y descripción de Local Default en la sección 4.2.2. La segunda edición dice:
DEFINICIÓN: un valor predeterminado local es una implementación predeterminada de una dependencia que se origina en el mismo módulo o capa.
Valores predeterminados locales
Cuando está desarrollando una clase que tiene una Dependencia , probablemente tenga en mente una implementación particular de esa Dependencia . Si está escribiendo un servicio de dominio que accede a un Repositorio, lo más probable es que planee desarrollar una implementación de un Repositorio que use una base de datos relacional.
Sería tentador hacer que esa implementación sea la utilizada por defecto por la clase en desarrollo. Pero cuando se implementa un valor predeterminado prospectivo de este tipo en un ensamblaje diferente, usarlo como predeterminado significa crear una referencia sólida a ese otro ensamblaje, violando efectivamente muchos de los beneficios del acoplamiento débil descritos en el capítulo 1. Tal implementación es lo opuesto a un Local Incumplimiento : es un Incumplimiento extranjero . Una clase que tiene una referencia estricta a un valor predeterminado extranjero está aplicando el antipatrón Control Freak . Hablaremos de Control Freak en el capítulo 5.
Por el contrario, si la implementación predeterminada prevista se define en la misma biblioteca que la clase consumidora, no tendrá ese problema. Es poco probable que este sea el caso con los Repositorios, pero estos Valores Predeterminados Locales a menudo surgen como implementaciones del patrón de Estrategia.
NOTA: El texto de Local Default en la primera edición es ligeramente diferente, pero no tan diferente. Utilicé el texto de la segunda edición, porque no tengo a mi disposición el texto de la primera edición en un formato fácil de copiar/pegar.
CONSEJO: Dado que está al principio del libro, mi consejo sería cambiar a la segunda edición, ya que es la versión más reciente y una mejora general del libro. Esta publicación de blog describe las mejoras que Mark y yo hicimos en esa edición.